// Copyright (C) 2023 即时通讯网(52im.net) & Jack Jiang.
// The RainbowChat Project. All rights reserved.
// 
// 【本产品为著作权产品，合法授权后请放心使用，禁止外传！】
// 【本次授权给：<北京小羊驼科技有限公司>，授权编号：<NT231212144350>，代码指纹：<A.702363430.550>，技术对接人微信：<ID: wxid_wbyootvkdcgj22>】
// 【授权寄送：<收件：苏先生、地址：北京市大兴区北京密码西区6号楼1单元301、电话：18613885610、邮箱：bd@huiyuanxiang-inc.com>】
// 
// 【本系列产品在国家版权局的著作权登记信息如下】：
// 1）国家版权局登记名(简称)和权证号：RainbowChat    （证书号：软著登字第1220494号、登记号：2016SR041877）
// 2）国家版权局登记名(简称)和权证号：RainbowChat-Web（证书号：软著登字第3743440号、登记号：2019SR0322683）
// 3）国家版权局登记名(简称)和权证号：RainbowAV      （证书号：软著登字第2262004号、登记号：2017SR676720）
// 4）国家版权局登记名(简称)和权证号：MobileIMSDK-Web（证书号：软著登字第2262073号、登记号：2017SR676789）
// 5）国家版权局登记名(简称)和权证号：MobileIMSDK    （证书号：软著登字第1220581号、登记号：2016SR041964）
// * 著作权所有人：江顺/苏州网际时代信息科技有限公司
// 
// 【违法或违规使用投诉和举报方式】：
// 联系邮件：jack.jiang@52im.net
// 联系微信：hellojackjiang
// 联系QQ号：413980957
// 授权说明：http://www.52im.net/thread-1115-1-1.html
// 官方社区：http://www.52im.net
package com.x52im.rainbowchat.push.ios;


import com.eva.epc.common.util.Platform;
import com.eva.epc.common.util.PropertyMan;
import com.eva.framework.utils.LoggerFactory;

/**
 * iOS的APNs推送相关配置信息读取工具类。
 * 
 * @author Jason
 * @since 4.3
 */
public class APNSConf
{
	private PropertyMan pm = null;
	
	private final static String TAG = APNSConf.class.getSimpleName();
	private static APNSConf instance = null;
	
	public static APNSConf getInstance()
	{
		if(instance == null)
			instance = new APNSConf();
		return instance;
	}
	
	public APNSConf()
	{
//		String path = "/E:/Program Files/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/RobotimeMissU_s_new/WEB-INF/classes/com/robotime/missu_s/ends/base_conf.properties";
		String pathOriginal = APNSConf.class.getResource("apns_conf.properties").getPath();
		String path = Platform.isWindows()?pathOriginal.substring(1):pathOriginal;
		
		LoggerFactory.getLog().debug("["+TAG+"] iOS-APNs消息推送配置文件路径："+path);
		
		pm = new PropertyMan(path);
	}
	
	/**
	 * 因Properties文件默认机制是采用ISO8859-1处理的，所以中文字符读取会存在乱码现象。
	 * 本方法是在父类方法的基础上解决乱码问题。
	 * 
	 * @param key
	 * @return
	 */
	public String getPropertyUTF(String key)
	{
		try
		{
			String s = pm.getProperty(key);
			return new String(s.getBytes("ISO-8859-1"), "utf-8");
		}
		catch (Exception e)
		{
			LoggerFactory.getLog().error("["+TAG+"] iOS-APNs的配置项："+key
					+" 读取失败，请检查您的配置文件路径是否放置正确！", e);
			return null;
		}
	}
	
	private String getPUSH_CER_PATH_DEV()
	{
		return getPropertyUTF("PUSH_CER_PATH_DEV");
	}
	private String getPUSH_CER_PATH_DISTRIBUTION()
	{
		return getPropertyUTF("PUSH_CER_PATH_DISTRIBUTION");
	}
	public String getPushCerPath()
	{
		LoggerFactory.getLog().debug("["+TAG+"] 正在读取iOS-APNs的证书，当前推送模式："
				+(isDistrubuttionMode()?"生产模式":"开发模式"));
		return this.isDistrubuttionMode()?getPUSH_CER_PATH_DISTRIBUTION():getPUSH_CER_PATH_DEV();
	}
	
	public String getPUSH_CER_PASSWORD()
	{
		return getPropertyUTF("PUSH_CER_PASSWORD");
	}
	
	public String getPUSH_MY_IOS_APP_BUNDLE_ID()
	{
		return getPropertyUTF("PUSH_MY_IOS_APP_BUNDLE_ID");
	}
	
	/**
	 * 推送开关。
	 * 
	 * @return true表示开启推送、false表示关闭推送（即不进行APNs的推送）。
	 */
	public boolean isPushOpen()
	{
		return "1".equals(getPropertyUTF("PUSH_OPEN"));
	}
	
	/**
	 * 是否生产模式。
	 * 
	 * @return
	 */
	public boolean isDistrubuttionMode()
	{
		return "1".equals(getPropertyUTF("PUSH_MODE"));
	}
	
//	public static void main(String[] args)
//	{
//		System.out.println("生产模式？"+APNSConf.getInstance().isDistrubuttionMode());
//		System.out.println("getPUSH_CER_PATH_DEV？"+APNSConf.getInstance().getPUSH_CER_PATH_DEV());
//		System.out.println("getPUSH_CER_PATH_DISTRIBUTION？"+APNSConf.getInstance().getPUSH_CER_PATH_DISTRIBUTION());
//		System.out.println("getPUSH_CER_PASSWORD？"+APNSConf.getInstance().getPUSH_CER_PASSWORD());
//		
//	}
	
}
